S7- 400H的MODBUS RTU通讯与常见问题
S7- 400H可以用作 Modbus (RTU)主站或 Modbus (RTU)从站。
使用S7-400 H 通过 MODBUS RTU 协议与第三方设备建立通信连接,需要如下的软硬件组件:
硬件和软件 组件 |
说明 |
CP341 |
可装载的 Modbus (RTU) 主站和 Modbus (RTU) 从站驱动可以用在 CP341 上使用,CP341 订货号如下: · 6ES7341-1AH02-0AE0 · 6ES7341-1BH02-0AE0 · 6ES7341-1CH02-0AE0 |
CP441-2 |
可装载的
Modbus (RTU) 主站和
Modbus(RTU) 从站驱动可以在
CP441-2 上使用,CP441-2 订货号:6ES7441-2AA05-0AE0 · 6ES7963-1AA10-0AA0 带有 RS232 接口 · 6ES7963-2AA10-0AA0 带有 TTY 接口 · 6ES7963-3AA10-0AA0 带有 RS422/RS485 接口 |
可装载 Modbus(RTU) 主站驱动 |
可装载 Modbus (RTU) 主站驱动授权可通过如下的订货号采购: · 6ES7870-1AA01-0YA0:此授权包包括软件、文档以及硬件狗 · 6ES7870-1AA01-0YA1:此授权包只包括硬件狗 |
可装载 Modbus(RTU) 从站驱动 |
可装载 Modbus (RTU) 从站驱动授权可通过如下的订货号采购: · 6ES7870-1AB01-0YA0:此授权包包括软件、文档以及硬件狗 · 6ES7870-1AB01-0YA1:此授权包只包括硬件狗 |
为了能够使用 CP PtP Modbus RTU 软件,需要满足下列要求:
· 已安装的 STEP 7 Basic V5.3 版本或更高版本。
· 已安装的选件包 Point-to-Point Connection Parameter Assignment ( CP PtP Param ) V5.1 或更高版本。
PTP协议软件包:SIMATIC S7-CP PtP Param下载链接:
https://support.automation.siemens.com/CN/view/zh/27013524
可装载的驱动程序“Modbus Master (RTU)”
https://support.industry.siemens.com/cs/cn/zh/view/27774018
可装载驱动程序 Modbus Slave (RTU)
https://support.industry.siemens.com/cs/cn/zh/view/27774276
S7-400H中加载CP341 MODBUS驱动程序,请遵守如下步骤:
1 |
切断从站 CPU 的电源。接口模块(IM)随后切换到主 CPU 上。 |
2 |
切换主 CPU 的运行状态到“STOP”。 |
3 |
通过主 CPU 的 MPI 接口,直接从 PG 装载驱动程序到 CP341 模块的 EPROM 中。如果没有 PG,模块替代是不可能的。 |
详细操作参考:
如何加载驱动程序到CP341模块中,例如“Modbus Master(RTU)”。使它通过一个 ET 200M 模块连接一套 S7-400 H 系列的 PLC?
https://support.automation.siemens.com/CN/view/zh/17854293
PCS 7系统推荐使用CP341用于MODBUS 通讯,放置于ET200M机架,实现冗余。
CP341作为 MODBUS从站时,需调用 CP341 库中的P_SND_RK、P_RCV_RK 功能块或 PCS7 库 SND_341、RCV_341 功能块。
CP341作为MODBUS主站时,需要调用FB80功能块。
具体组态方法,请参见文档:
CP340/CP341/CP440/CP441通讯及编程
https://support.industry.siemens.com/cs/cn/zh/view/72928033
MODBUS Master手册下载链接:
https://support.automation.siemens.com/CN/view/zh/1220184
MODBUS Slave手册下载链接:
https://support.automation.siemens.com/CN/view/zh/1218007
串行通讯模板 CP341 有 RS232C 或 TTY 或 RS485/422 三种电气接口类型。一般来讲,RS232 的通讯最大距离为 15m,20mA TTY 的通讯最大距离为 100m(主动模式)、1000m(被动模式),RS422/485 的通讯最大距离位 1200m。每种接口方式下的具体接线方法可参考 CP341 手册。
以下示例为 RS485 接口定义:
在使用RS422/485接口时,如果电缆长度超过50m,则必须在接收方焊接一个约330欧姆的终端电阻,以保证正常的数据传输。
当CP341-RS485作MODBUS主站时,可以直接创建一个多点连接的网络,在一个RS485网络中最多可以连接32个从站设备。CP341的MODBUS驱动程序将会使接收的二 线制线路在发送和接收之间切换。
功能码 |
功能 |
CPU地址 |
Modbus地址 |
长度范围 |
01 |
读取线圈状态 |
M、Q、T、C |
00001-09999 |
1~2024bits |
02 |
读取输入状态 |
M、I |
10001-19999 |
1~2024bits |
03 |
读取保持寄存器 |
DB |
40001-49999 |
1~127words |
04 |
读取输入寄存器 |
DB |
30001-39999 |
1~127words |
05 |
写单个线圈 |
M、Q |
00001-09999 |
1bit |
06 |
预设单个寄存器 |
DB |
40001-49999 |
1word |
15 |
写多个线圈 |
M、Q |
00001-09999 |
1~2024bits |
16 |
预设多个保持 寄存器 |
DB |
40001-49999 |
1~127words |
在实际的应用中,可以将多个节点连接到一个RS422/485网络中,这时就需要通过程序控制的方式实现站点间的数据交换,这里称之为站点间的轮询通信。多站点轮询通信主要以站地址标识(站地址)为基础,系统主站发送带有站地址标识的数据来寻址不同的从站,同时不同的从站通过响应带有站地址标识的数据给主站,以完成整个通信过程。这就要求整个RS422/485网络中站点的地址不能相同,且必须唯一。
对于轮询通信,可以根据不同的网络规模、不同的通信对象及通信需求等,采用有针对性的轮询方法,在程序的实现上也不尽相同,这里仅给出两种主要的编程思路,供应用时参考。
· 思路一:以固定的时间间隔进行轮询,即以固定的时间发送指令给不同的从站并处理每个从站的响应。例如每1秒钟轮询一个从站,需要更改的只是发送的数据,在大多数情况下只需修改数据中的从站地址。对于接收到数据的处理,可以根据具体的用户要求进行。
· 思路二:根据发送和接收完成的标志来完成,即发送完成后启动接收,接收完成后再启动下一次发送。同样需要更改的只是发送的数据,在大多数情况下只需修改数据中的从站地址。对于接收到数据的处理,可以根据具体的用户要求进行。
CP341 Modbus RTU多站点轮询
https://www.ad.siemens.com.cn/download/docMessage.aspx?Id=3472
通信功能块用于建立CPU由于CP之间数据交换,使用时需要注意以下几个方面:
· 对同一个CP340/CP341模块在程序中不能多次调用发送或接收功能块;
· 发送块由沿触发使能,接收块由高电平使能;
· 发送数据长度由参数LEN决定,接收数据长度由发送方决定,可以通过LEN读出;
· 发送块故障状态取决于DONE、ERROR、STATUS,只在一个扫描周期内有效;
· 接收块故障状态取决于NDR、ERROR、STATUS,只在一个扫描周期内有效;
当使用 CP 341 时,将可加载驱动程序直接装载到 CP 341中,应注意,在没有编程设备的情况下将不能更换模块。使用 CP 441-2 时,将可加载驱动程序装载到 CPU 的装载存储器中,并在 CPU 启动时传送到 CP 的存储器中,因此,CPU 必须有足够的装载存储器空间。
多点网络接线图如下: